WooCommerce API Manager migration#7
WooCommerce API Manager migration#7shramee wants to merge 26 commits intoFreemius:feature/woocommercefrom
Conversation
Feature/woocommerce
Not including the `migrate` directory. Searched and replaced EDD naming with WC…
and correcting `WP_FS__NAMESPACE_WC`
New content provided by Vova over Slack…
Call to undefined function print_awesome_r()
|
Tested with WCAM v1.4.6.3 |
… with any platform.
|
|
||
| return $billing_cycle; | ||
| private function get_billing_cycle( $id ) { | ||
| return 'annual'; |
There was a problem hiding this comment.
@shramee does WooCommerce only allow annual billing cycles? Or is that only the case for your store?
There was a problem hiding this comment.
Well WooCommerce/WCAM doesn't support billing cycles... only one time payment AFAIK. I think WC Subscriptions plugin allows that...
| "url" => $url, | ||
| "plugin_version" => '2.5.0', | ||
| "is_premium" => true, | ||
| "site_uid" => 'MoouenVlGG45', |
There was a problem hiding this comment.
@shramee you need to use $this->get_anonymous_id( $url ), the site_uid must be a unique 32 chars identifier.
| "charset" => 'UTF-8', | ||
| "platform_version" => '4.6.1', | ||
| "php_version" => '7.0.0', | ||
| "module_id" => 'Storefront Pro', |
There was a problem hiding this comment.
@shramee the module_id have to be the product ID, not the title.
| "platform_version" => '4.6.1', | ||
| "php_version" => '7.0.0', | ||
| "module_id" => 'Storefront Pro', | ||
| "email" => $email, |
There was a problem hiding this comment.
@shramee there's no point adding new params since maybe_process_api_request() is part of the abstract class and it doesn't expect that argument, and won't do anything with it.
There was a problem hiding this comment.
I do see that you added some logic that checks email in validate_params() which is fine. But I don't see that you send the email as part of the migration request in my_edd_activate_license() at samples/module-migration.php.
| * @param string $name Property to return | ||
| * @return mixed|null Value if property exists else null | ||
| */ | ||
| public function __get( $name ) { |
There was a problem hiding this comment.
@shramee why do you need external "magic" access? It's not a good practice in general.
There was a problem hiding this comment.
Well, that doesn't expose private values... Just order (protected property) and requests parameters...
There was a problem hiding this comment.
In general, if you want to expose specific params, the best practice is adding the relevant getters. In the current context, if you read my comment about the dependency of FS_WC_Migration and FS_WC_Migration_Endpoint (that should be removed), I think you can get rid of this code at all.
| 0, | ||
| 32 | ||
| ); | ||
| return $this->ep->site_uid; |
There was a problem hiding this comment.
@shramee site_uid and install_id are NOT the same things. Please generate the install_id based on a similar structure I created the EDD insatll_id.
| protected static $_edd_sl; | ||
|
|
||
| /** @var FS_WC_Migration_Endpoint Instance */ | ||
| protected $ep; |
There was a problem hiding this comment.
@shramee FS_WC_Migration and FS_WC_Migration_Endpoint were intentionally designed to be isolated classes. Based on reviewing your code, you are using $ep to access the order information. I recommend removing this dependency and just passing the minimal arguments that you need to access the order data (based on what I've seen it's the customer email and license key).
| $purchase['payment_method'] = $this->get_local_purchase_gateway(); | ||
| $purchase['customer_external_id'] = 'edd_customer_' . $this->_edd_customer->id; | ||
| $purchase['license_key'] = self::$_edd_sl->get_license_key( $this->_edd_license->ID ); // Preserve the same keys. | ||
| $purchase['payment_method'] = $this->_wc_order->payment_method; |
There was a problem hiding this comment.
@shramee what are the optional values of $this->_wc_order->payment_method? Because FS only accepts paypal and cc (for credit cards).
|
|
||
| if ( $this->local_is_sandbox_purchase() ) { | ||
| $purchase['is_sandbox'] = true; | ||
| if ( ! $purchase['payment_method'] ) { |
There was a problem hiding this comment.
@shramee in what scenario $this->_wc_order->payment_method can be empty?
There was a problem hiding this comment.
When payment is not made (100% coupon)...
I used 100% coupon and FS api threw an error saying it can't be empty...
# Conflicts: # includes/entities/class-fs-entity-map.php # includes/migration/edd/class-fs-edd-download-migration.php # samples/module-migration.php
and… `get_local_license_id` now uses download `permission_id`
and fixing `FS_WC_Migration_Endpoint::get_local_paid_plan_id()`
should be either `paypal` or `cc`
REQUIRES V1.4.4 or higher.
Docs: https://docs.woocommerce.com/document/woocommerce-api-manager/